package dao;

import java.util.List;

import model.Event;
import model.Value;
import modelInterfaces.IEvent;
import modelInterfaces.IValue;

/**
*
* Interface that all ValueDAOs must support
*/
public interface IValueDAO {
	
	/**
	 * Create a {@link Value} in database depending a parameter value.
	 * @param value	value of a {@link Event}
	 * @throws DAOException
	 * @see Value
	 * @see Event
	 */
	public void create(IValue value) throws DAOException;
    
	
	/**
	 * Delete a {@link Value} in database depending a parameter value.
	 * @param value	value of a {@link Event}
	 * @throws DAOException
	 * @see Value
	 * @see Event
	 */	
	public void delete(IValue value) throws DAOException;
    
	
	/**
	 * Update a {@link Value} in database depending a parameter value.
	 * @param value	value of a {@link Event}
	 * @throws DAOException
	 * @see Value
	 * @see Event
	 */	
	public void update(IValue value) throws DAOException;
    
	
	/**
	 * Retrieve a {@link Value} list in database depending a parameter event.
	 * @param event	Event which is to get the list of values
	 * @return list of values 
	 * @throws DAOException
	 * @see Value
	 * @see Event
	 */	
	public List<IValue> retrieve(IEvent event) throws DAOException;
    
	
	/**
	 * Retrieve a list with all events values of database.
	 * @return list with all values of database.
	 * @throws DAOException
	 * @see Value
	 * @see Event
	 */		
	public List<IValue> retrieveAll() throws DAOException;
}
